package cn.b.sky.mes.hr.dao;

import java.util.List;

import cn.b.sky.mes.hr.model.Personnel;
import cn.b.sky.mes.hr.model.condition.PersonnelCondition;
import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.cm.model.WorkCenter;

public interface PersonnelDao {

  /**
   * 
   * <strong>Title : getPersonnelListByCondition<br></strong>
   * <strong>Description : </strong>根据条件查询人员列表<br> 
   * <strong>Create on : 2016-3-29 上午10:28:26<br></strong>
   * <p>
   * @param condition 
   * @return
   * List<Personnel>
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Personnel> getPersonnelListByCondition(PersonnelCondition condition);

  /**
   * 
   * <strong>Title : getPersonnelCountByCondition<br></strong>
   * <strong>Description : </strong>根据条件查询人员数量<br> 
   * <strong>Create on : 2016-3-29 上午10:28:54<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getPersonnelCountByCondition(PersonnelCondition condition);

  /**
   * 
   * <strong>Title : insertPersonnel<br></strong>
   * <strong>Description : </strong>人员新增<br> 
   * <strong>Create on : 2016-3-29 上午10:29:20<br></strong>
   * <p>
   * @param personnel
   * void
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertPersonnel(Personnel personnel);

  /**
   * 
   * <strong>Title : updatePersonnel<br></strong>
   * <strong>Description : </strong>人员修改<br> 
   * <strong>Create on : 2016-3-29 上午10:29:40<br></strong>
   * <p>
   * @param personnel
   * void
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updatePersonnel(Personnel personnel);

  /**
   * 
   * <strong>Title : deletePersonnel<br></strong>
   * <strong>Description : </strong>人员删除<br> 
   * <strong>Create on : 2016-3-29 上午10:29:54<br></strong>
   * <p>
   * @param personnel
   * void
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deletePersonnel(Personnel personnel);

  /**
   * 
   * <strong>Title : getPersonnelByPk<br></strong>
   * <strong>Description : </strong>查询人员信息<br> 
   * <strong>Create on : 2016-3-29 上午10:30:08<br></strong>
   * <p>
   * @param siteCode
   * @param personnelCode
   * @return
   * Personnel
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Personnel getPersonnelByPk(@Param("siteCode") String siteCode, @Param("personnelCode") String personnelCode);

  /**
   * 
   * <strong>Title : getPersonnelsByPermission<br></strong>
   * <strong>Description : </strong>根据权限查找用户列表（模糊查询）<br> 
   * <strong>Create on : 2016年3月29日 下午2:29:37<br></strong>
   * <p>
   * @param siteCode 工厂编号
   * @param userCode 管理员用户编号
   * @param personnelCode 人员编号
   * @param workcenterCode 指定工作中心
   * @return
   * List<Personnel>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Personnel> getPersonnelsByPermission(@Param("siteCode") String siteCode, @Param("userCode") String userCode,
      @Param("personnelCode") String personnelCode, @Param("workcenterCode") String workcenterCode);

  /**
   * 
   * <strong>Title : selectWorkCentersByShiftingPermission<br></strong>
   * <strong>Description : </strong>根据用户获取有权限的工作中心<br> 
   * <strong>Create on : 2016-3-31 下午12:51:49<br></strong>
   * <p>
   * @param siteCode
   * @param userCode
   * @param lockFlag
   * @return
   * List<WorkCenter>
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkCenter> selectWorkCentersByShiftingPermission(@Param("siteCode") String siteCode,
      @Param("userCode") String userCode, @Param("lockFlag") Integer lockFlag);


  /**
   * 
   * <strong>Title : selectPersonnelsSuggestByPermission<br></strong>
   * <strong>Description : </strong>搜索建议查找人员<br> 
   * <strong>Create on : 2016-4-11 下午6:10:56<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Personnel>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Personnel> selectPersonnelsSuggestByPermission(PersonnelCondition condition);
}
